<?php


namespace App\Api;
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

use App\Domain\GoodsType as GoodsTypeDomain;
use PhalApi\Api;

class GoodsType extends Api
{
    public function getRules()
    {
        return array(
            'updateGoodsTypeInfo' => array(
                'goodType_name' => array('name' => 'goodType_name', 'require' => true, 'min' => 1, 'max' => 20, 'source' => 'post', 'desc' => '商品类型的名称'),
                'level' => array('name' => 'level', 'require' => true, 'min' => 1, 'source' => 'post', 'desc' => '商品类型的等级'),
                'goodType_parentName' => array('name' => 'goodType_name', 'require' => true, 'min' => 1, 'max' => 20, 'source' => 'post', 'desc' => '商品的所属类型'),
                'goodType_id' => array('name' => 'goodType_id', 'require' => true, 'min' => 1, 'source' => 'post', 'desc' => '商品类型的id'),

            ),
            'insertGoodsTypeInfo' => array(
                'goodType_name' => array('name' => 'goodType_name', 'require' => true, 'min' => 1, 'max' => 20, 'source' => 'post', 'desc' => '商品类型的名称'),
//                'level' => array('name' => 'level', 'require' => true, 'min' => 1, 'source' => 'post', 'desc' => '商品类型的等级'),
                'goodType_parentName' => array('name' => 'goodType_name', 'require' => true, 'min' => 1, 'max' => 20, 'source' => 'post', 'desc' => '商品的所属类型'),

            ),
            'deleteGoodsTypeInfo' => array(
                'goodType_id' => array('name' => 'goodType_id', 'require' => true, 'min' => 1, 'source' => 'post', 'desc' => '商品类型的id'),

            ),
            'likeQueryByGoodsTypeLevel' => array(
                'like_goodTypeLevel' => array('name' => 'like_goodTypeLevel', 'require' => true, 'min' => 1, 'desc' => '模糊的商品类型等级')
            ),
            'likeQueryByGoodsTypeName' => array(
                'like_goodTypeName' => array('name' => 'like_goodTypeName', 'require' => true, 'min' => 1, 'desc' => '模糊的商品类型名称')
            ),

        );
    }

    /**
     * 获取所有商品的类型信息
     * @desc 获取所有商品的类型信息
     */
    public function getGoodsTypes()
    {
        $domain = new GoodsTypeDomain();
        $info = $domain->getGoodsTypes();
        return array('info' => $info);
    }

    /**
     * 更新商品的类型的信息
     * @desc 通过商品类型名称，等级，商品索数类型，商品类型id四个参数更新商品类型，前三个是要设置的值
     * 更新异常时返回false，数据无变化时返回0，成功更新返回影响的行数
     */
    public function updateGoodsTypeInfo()
    {
        $goodType_name = $_POST['goodType_name'];
        $level = $_POST['level'];
        $goodType_parentName = $_POST['goodType_parentName'];
        $goodType_id = $_POST['goodType_id'];
        $domain = new GoodsTypeDomain();
        $info = $domain->updateGoodsTypeInfo($goodType_name, $level, $goodType_parentName, $goodType_id);
        return array('info' => $info);
    }

    /**
     * 增加商品的类型的信息
     * @desc 通过商品类型名称，商品索数类型，两个参数插入商品类型
     * 返回新增的ID（注意，这里不能使用连贯操作，因为要保持同一个ORM实例）
     */
    public function insertGoodsTypeInfo()
    {
        $goodType_name = $_POST['goodType_name'];
//        $level = $_POST['level'];
        $goodType_parentName = $_POST['goodType_parentName'];
        $domain = new GoodsTypeDomain();
        $id = $domain->insertGoodsTypeInfo($goodType_name, $goodType_parentName);
        return array('id' => $id);
    }

    /**
     * 删除商品的类型的信息
     * @desc 通过商品类型的id进行删除
     * 按id进行删除，并返回影响的行数
     */
    public function deleteGoodsTypeInfo()
    {
        $goodType_id = $_POST['goodType_id'];
        $domain = new GoodsTypeDomain();
        $row = $domain->deleteGoodsTypeInfo($goodType_id);
        return array('row' => $row);
    }

    /**
     * 按等级模糊查询商品类型
     * @desc 传商品类型等级的相关信息，查询相匹配的商品类型，实现模糊查询
     */
    public function likeQueryByGoodsTypeLevel()
    {
        $like_goodTypeLevel = $_GET['like_goodTypeLevel'];
        $domain = new GoodsTypeDomain();
        $info = $domain->likeQueryByGoodsTypeLevel($like_goodTypeLevel);
        return array('info' => $info);
    }

    /**
     * 按名称模糊查询商品类型
     * @desc 传商品类型名称的相关信息，查询相匹配的商品类型，实现模糊查询
     */
    public function likeQueryByGoodsTypeName()
    {
        $like_goodTypeName = $_GET['like_goodTypeName'];
        $domain = new GoodsTypeDomain();
        $info = $domain->likeQueryByGoodsTypeName($like_goodTypeName);
        return array('info' => $info);
    }
}